import type { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from "axios";

/**
 * 请求拦截器配置选项
 */
export interface MyInterceptors<T = AxiosResponse> {
  requestSuccessFn?: (config: InternalAxiosRequestConfig<any>) => InternalAxiosRequestConfig<any>; // 请求成功时的拦截器函数
  requestFailureFn?: (err: any) => any; // 请求失败时的拦截器函数
  responseSuccessFn?: (res: T) => T; // 响应成功时的拦截器函数
  responseFailureFn?: (err: any) => any; // 响应失败时的拦截器函数
}

/**
 * 自定义请求配置，继承自 AxiosRequestConfig
 */
export interface MyRequestConfig<T = AxiosResponse> extends AxiosRequestConfig {
  interceptors?: MyInterceptors<T>; // 拦截器配置选项
}
